(function($)
{
    var $dialog = $('<div class="modal-backdrop">').append(
        $('<div class="modal fade">').append(
            // Header
            $('<div class="modal-header">').append(
                $('<h3 class="title">')
            ),

            // Content
            $('<div class="modal-body">').append(
                $('<p class="loading">').append('<img>'),
                $('<p class="content">')
            ).css('text-align', 'center'),

            // Footer
            $('<div class="modal-footer">').append(
                $('<button class="btn ok">').text('Đồng ý'),
                $('<button class="btn close">').text('Đóng')
            )
        )
    );

     var Dialog = function() {
        this.show = function(options)
        {
            this.options = $.extend({}, Dialog.defaultOptions, options);
            if (!$('body').data('dialog')) {
                $('body').data('dialog', $dialog);
                $('body').append($dialog);
            }
            // Events
            $dialog.find('button.close').click($.proxy(this.close, this));
            if (this.options.onAgree) {
                $dialog.find('button.ok').click(this.options.onAgree);
            }
            // Điền giá trị tương ứng với các tùy chọn
            $dialog.find('p.content').html(this.options.content);
            $dialog.find('.title').text(this.options.title);

            if (this.options.sClose) {
                $dialog.find('button.close').show();
            } else {
                $dialog.find('button.close').hide();
            }

            if (this.options.sAgree) {
                $dialog.find('button.ok').show();
            } else {
                $dialog.find('button.ok').hide();
            }

            if (this.options.sLoading) {
                $dialog.find('p.loading img').attr('src', this.options.loadingImage);
                $dialog.find('p.loading').show();
            } else {
                $dialog.find('p.loading').hide();
            }

            $('body').addClass('modal-open');
            $dialog.fadeIn(this.options.over);

            var $modal = $dialog.find('.modal.fade');
            $modal.css('margin-left', '-' + $modal.width() / 2 + 'px');
            $modal.css('margin-top', '-' + $modal.height() / 2 + 'px');
        };

        this.close = function()
        {
            if (this.options.onClose) {
                this.options.onClose.call(this);
            }
            $dialog.fadeOut(this.options.out);
            $('body').removeClass('modal-open');
        }
    };

    Dialog.defaultOptions = {
        loadingImage: '/images/loading.gif',
        sClose: true,
        sLoading: false,
        sAgree: false,
        over: 400,
        out: 300,
        title: 'THRM',
        content: 'Vui lòng đợi giây lát'
    };

    $.Dialog = function() { };
    $.Dialog.instance = null;
    $.Dialog.show = function(options)
    {
        $.Dialog.instance = new Dialog();
        $.Dialog.instance.show(options);
    };

    $.Dialog.close = function()
    {
        $.Dialog.instance.close();
        $.Dialog.instance = null;
    };
})(jQuery);